//package com.lynn.salary.util;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.io.InputStream;
//import java.util.ArrayList;
//import java.util.Iterator;
//import java.util.List;
//
//import org.apache.poi.ss.usermodel.Cell;
//import org.apache.poi.ss.usermodel.CellStyle;
//import org.apache.poi.ss.usermodel.Row;
//import org.apache.poi.ss.usermodel.Sheet;
//import org.apache.poi.ss.usermodel.Workbook;
//import org.apache.poi.ss.usermodel.WorkbookFactory;
//import org.apache.poi.ss.util.CellRangeAddress;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//
//public class ExcelCreator {
//
//	public static ExcelCreator instance = new ExcelCreator();
//
//	private ExcelCreator() {
//	}
//
//	
//	public File salaryReport(ArrayList<List<String>> report, String month)
//			throws IOException {
//		List<String> rHeader = report.get(0);
//		Workbook wb = new XSSFWorkbook();
//		Sheet sheet = wb.createSheet(month + "工资表");
//
//		Row header = sheet.createRow(2);
//		Cell cell = header.createCell(0);
//		cell.setCellValue("编号");
//		sheet.addMergedRegion(new CellRangeAddress(2, 3, 0, 0));
//		cell = header.createCell(1);
//		cell.setCellValue("姓名");
//		sheet.addMergedRegion(new CellRangeAddress(2, 3, 1, 1));
//		cell = header.createCell(2);
//		cell.setCellValue("部门");
//		sheet.addMergedRegion(new CellRangeAddress(2, 3, 2, 2));
//
//		int s1 = rHeader.indexOf("部门");
//		int e1 = rHeader.indexOf("应发合计");
//		int e2 = rHeader.indexOf("应扣合计");
//
//		cell = header.createCell(3);
//		cell.setCellValue("应发工资（单位：元）");
//		sheet.addMergedRegion(new CellRangeAddress(2, 2, 3, e1));
//
//		cell = header.createCell(e1 + 1);
//		cell.setCellValue("应扣工资（单位：元）");
//		sheet.addMergedRegion(new CellRangeAddress(2, 2, e1 + 1, e2));
//
//		Row salaryItem = sheet.createRow(3);
//		// salaryItem.createCell(s1+1);
//		for (int i = s1 + 1; i <= e1; i++) {
//			cell = salaryItem.createCell(i);
//			cell.setCellValue("" + rHeader.get(i));
//		}
//
//		for (int i = e1 + 1; i <= e2; i++) {
//			cell = salaryItem.createCell(i);
//			cell.setCellValue("" + rHeader.get(i));
//		}
//
//		cell = header.createCell(e2 + 1);
//		cell.setCellValue("实发工资");
//		sheet.addMergedRegion(new CellRangeAddress(2, 3, e2 + 1, e2 + 1));
//
//		Row r0 = sheet.createRow(0);
//		r0.createCell(0).setCellValue(month + " 工资表");
//		sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, e2 + 1));
//
//		for (int i = 1; i < report.size(); i++) {
//			List<String> rRow = report.get(i);
//			Row row = sheet.createRow(3 + i);
//			for (int j = 0; j < rRow.size(); j++) {
//				cell = row.createCell(j);
//				if (j == 0)
//					cell.setCellValue(i);
//				else
//					cell.setCellValue(rRow.get(j));
//			}
//		}
//
//		// Write the output to a file
//		File f = new File("d:\\" + month + ".xlsx");
//		FileOutputStream fileOut = new FileOutputStream(f);
//		wb.write(fileOut);
//		fileOut.close();
//
//		return f;
//	}
//
//	public List<List<String>> paraseSalaryReport(File f) throws Exception {
//
//		InputStream inp = new FileInputStream(f);
//		// InputStream inp = new FileInputStream("workbook.xlsx");
//		Workbook wb = WorkbookFactory.create(inp);
//		Sheet sheet = wb.getSheetAt(0);
//		
//		Row row = sheet.getRow(3);//获取工资项名字
//		List<String> itemList = new ArrayList<String>();
//		Iterator<Cell> it = row.iterator();
//		Cell cell = null;
//		while(it.hasNext()) {
//			cell = it.next();
//			String name = cell.getStringCellValue();
//			if(name.trim().equals(""))continue;
//			itemList.add(name);
//		}
//		
//		//解析每个员工的工资
//		int max = sheet.getLastRowNum();
//		List<List<String>> items = new ArrayList<List<String>>();
//		items.add(itemList);//头部
//		for(int i=4;i<=max;i++) {
//			List<String> item = new ArrayList<String>();
//			items.add(item);
//			row = sheet.getRow(i);
//			it = row.iterator();
//			int j = 0;
//			while(it.hasNext()) {
//				cell = it.next();
//				if(j < 3) {
//					if(j == 1) {
//						String nId = cell.getStringCellValue();
//						int s = nId.indexOf("(")+1;
//						int e = nId.indexOf(")");
//						nId = nId.substring(s, e);
//						item.add(nId);
//					}
//				} else {
//					switch (cell.getCellType()) {
//						case Cell.CELL_TYPE_NUMERIC: {
//							item.add("" + cell.getNumericCellValue());
////							System.out.println(cell.getNumericCellValue());
//							break;
//						}
//						case Cell.CELL_TYPE_STRING: {
//							item.add(cell.getStringCellValue());
////							System.out.println(cell.getStringCellValue());
//							break;
//						}
//					}
//				}
//				j++;
//			}
//		}
//		
//		return items;
//	}
//	
//	public static void main(String[] args) throws Exception {
////		IStatisticsService s = (IStatisticsService) ObjectFactory
////				.getBean("statisticsService");
////		;
//		File f = new File("d:\\201205.xlsx");
//		ExcelCreator.instance.paraseSalaryReport(f);
//	}
//
//
//	private static void createCell(Workbook wb, Row row, short column,
//			short halign, short valign) {
//		Cell cell = row.createCell(column);
//		cell.setCellValue("Align It");
//		CellStyle cellStyle = wb.createCellStyle();
//		cellStyle.setAlignment(halign);
//		cellStyle.setVerticalAlignment(valign);
//		cell.setCellStyle(cellStyle);
//	}
//
//
//	public File kaoqinReport(List<ArrayList<String>> report, String timeString) throws Exception {
//		Workbook wb = new XSSFWorkbook();
//		Sheet sheet = wb.createSheet(timeString + "考勤报表");
//
//		for (int i = 0; i < report.size(); i++) {
//			List<String> rRow = report.get(i);
//			Row row = sheet.createRow(1 + i);
//			for (int j = 0; j < rRow.size(); j++) {
//				Cell cell = row.createCell(j);
//				if(i == 0) {
//					cell.setCellValue(rRow.get(j));
//				} else if( i!= 0 && j == 0) {
//					cell.setCellValue(i);
//				} else {
//					cell.setCellValue(rRow.get(j));
//				}
//			}
//		}
//		
//		File f = new File("d:\\" + timeString + "考勤报表.xlsx");
//		FileOutputStream fileOut = new FileOutputStream(f);
//		wb.write(fileOut);
//		fileOut.close();
//		
//		return f;
//	}
//}
